package com.hedl.practice.diyJava.reflex.dynamic_proxy;

import com.hedl.practice.diyJava.reflex.dynamic_proxy.tmp.UserService;

import java.util.Date;

public class UserServiceProxy implements UserService {
    private UserService target;     //被代理的对象

    public UserServiceProxy(UserService target){
        this.target = target;
    }

    @Override
    public void select() {
        before();

        //这里调用了真实的实现类UserServiceImpl中的select，类似开发中的dao层调用service层
        target.select();        //这里才实际调用真实主题角色的方法
        after();
    }

    @Override
    public void update() {
        before();

        //这里调用了真实的实现类UserServiceImpl中的update，类似开发中的dao层调用service层
        target.update();       //这里才实际调用真实主题角色的方法
        after();
    }

    private void before(){          //在执行方法之前执行
        System.out.println(String.format("log start time [%s]",new Date()));
    }
    private void after(){           //在执行方法之后执行
        System.out.println(String.format("log end time [%s]",new Date()));
    }
}
